
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create PROCEDURE [dbo].[POPOLA_DATITAX_IVA] @codPren char(14), @n_mod int, @n_seq int
--WITH ENCRYPTION
AS 
declare @nr_lettera nvarchar(50);
declare @codval     char(3);
declare @data_pren datetime;
declare @actualNMOD int;

create table #tmp_bf(
	CODTASSA VARCHAR(4),
  importo decimal(18,2),
  codiva  char(3),
  aliquota decimal(18,2),
  descrizione varchar(100)
)

select @actualNMOD=N_MOD
from biglie 
where codpren=@codPren

if (@actualNMOD = @n_mod) 
begin

select @codval=codval,@nr_lettera=LETTERA_ART8BIS,@data_pren=DATA_PREN
from biglie 
where codpren=@codPren and N_MOD=@n_mod

-- diritti
insert into #tmp_bf(CODTASSA, importo,codiva,aliquota,descrizione)
select D.CODTASSA, sum(d.tassa) as importo,i.codiva,i.aliquota,i.descrizione 
from dettax d 
inner join biglie b on b.codpren=d.codpren and b.n_mod=d.n_mod
inner join seqbig s on s.codpren=d.codpren and d.n_mod=s.n_mod and d.n_seq=s.n_seq
--vm 06-06-2013
inner join iva i on ((@nr_lettera is null and i.IS_ART8_BIS=0) or (@nr_lettera is not null and i.IS_ART8_BIS=1))
inner join configdiritti t on t.codtassa=d.codtassa and t.codval=b.codval and t.codprov=b.codprov 
	and t.codlocale=b.cod_locale and (t.coditinera=s.coditinera or t.coditinera='*') 
	and t.codiva=i.CODIVA and @data_pren between t.VALIDO_DAL and t.VALIDO_AL

where d.codpren=@codPren
and d.n_mod=@n_mod
and d.n_seq=@n_seq

group by i.codiva,i.aliquota,i.descrizione, D.CODTASSA
-- assicurazione
insert into #tmp_bf(CODTASSA, importo,codiva,aliquota,descrizione)
select D.CODTASSA, sum(d.tassa) as importo,i.codiva,i.aliquota,i.descrizione 
from dettax d 
inner join biglie b on b.codpren=d.codpren and b.n_mod=d.n_mod
inner join seqbig s on s.codpren=d.codpren and d.n_mod=s.n_mod and d.n_seq=s.n_seq
--vm 06-06-2013
inner join iva i on ((@nr_lettera is null and i.IS_ART8_BIS=0) or (@nr_lettera is not null and i.IS_ART8_BIS=1))
inner join configassicurazione t on t.codtassa=d.codtassa and t.codval=b.codval and t.n_seq=s.n_seq 
	and (t.coditinera=s.coditinera or t.coditinera='*')  
	and t.codiva=i.CODIVA and @data_pren between t.VALIDO_DAL and t.VALIDO_AL

where d.codpren=@codPren
and d.n_mod=@n_mod
and d.n_seq=@n_seq
group by i.codiva,i.aliquota,i.descrizione, D.CODTASSA

-- prezzo cat
/*insert into #tmp_bf(importo,codiva,aliquota,descrizione)
select sum(e.prezzobig) as importo,i.codiva,i.aliquota,i.descrizione  
from entbig e
inner join catego c on c.catkey=e.catkey
inner join seqbig s on s.codpren=e.codpren and e.n_mod=s.n_mod and e.n_seq=s.n_seq
inner join configcatego_iva g on c.gruppo_cat=g.gruppo_cat and g.coditinera=s.coditinera and g.CODVAL=@codval
	and @data_pren between g.VALIDO_DAL and g.VALIDO_AL
inner join iva i on i.codiva=g.codiva
where e.codpren=@codPren
and e.n_mod=@n_mod
and e.n_seq=@n_seq
group by i.codiva,i.aliquota,i.descrizione*/

-- tasse 
insert into #tmp_bf 
select CODTASSA, sum(importo) as importo, codiva, aliquota, descrizione from dbo.fn_calcolaTax (@codpren, @n_seq, @n_mod, 0, '*') group by codiva, aliquota, descrizione, CODTASSA


--INSERISCO IN DETTAX_IVA
INSERT INTO DETTAX_IVA(CODPREN, N_SEQ, N_MOD, ALIQUOTA, CODIVA, CODTASSA, IMPORTO)
	SELECT @CODPREN, @N_SEQ, @N_MOD, ALIQUOTA, CODIVA, CODTASSA, IMPORTO FROM #TMP_BF

end 
else
begin
  

  select @codval=codval,@nr_lettera=LETTERA_ART8BIS,@data_pren=DATA_PREN
  from biglie_arch  
  where codpren=@codPren
  and N_MOD=@n_mod


  -- diritti
  insert into #tmp_bf(CODTASSA, importo,codiva,aliquota,descrizione)
  select D.CODTASSA, sum(d.tassa) as importo,i.codiva,i.aliquota,i.descrizione 
  from dettax_arch  d 
  inner join biglie_arch  b on b.codpren=d.codpren and b.n_mod=d.n_mod
  inner join seqbig_arch  s on s.codpren=d.codpren and d.n_mod=s.n_mod and d.n_seq=s.n_seq
--vm 06-06-2013
inner join iva i on ((@nr_lettera is null and i.IS_ART8_BIS=0) or (@nr_lettera is not null and i.IS_ART8_BIS=1))
  inner join configdiritti t on t.codtassa=d.codtassa and t.codval=b.codval and t.codprov=b.codprov 
	and t.codlocale=b.cod_locale and (t.coditinera=s.coditinera or t.coditinera='*') 
	and t.codiva=i.CODIVA and @data_pren between t.VALIDO_DAL and t.VALIDO_AL  
  where d.codpren=@codPren and d.n_mod=@n_mod and d.n_seq=@n_seq
  group by i.codiva,i.aliquota,i.descrizione, D.CODTASSA
  
  -- assicurazione
  insert into #tmp_bf(CODTASSA, importo,codiva,aliquota,descrizione)
  select D.CODTASSA, sum(d.tassa) as importo,i.codiva,i.aliquota,i.descrizione 
  from dettax_arch  d 
  inner join biglie_arch  b on b.codpren=d.codpren and b.n_mod=d.n_mod
  inner join seqbig_arch  s on s.codpren=d.codpren and d.n_mod=s.n_mod and d.n_seq=s.n_seq  
--vm 06-06-2013
inner join iva i on ((@nr_lettera is null and i.IS_ART8_BIS=0) or (@nr_lettera is not null and i.IS_ART8_BIS=1))
  inner join configassicurazione t on t.codtassa=d.codtassa and t.codval=b.codval and t.n_seq=s.n_seq and (t.coditinera=s.coditinera or t.coditinera='*')  
	and t.codiva=i.CODIVA and @data_pren between t.VALIDO_DAL and t.VALIDO_AL  
  where d.codpren=@codPren  and d.n_mod=@n_mod  and d.n_seq=@n_seq
  group by i.codiva,i.aliquota,i.descrizione, D.CODTASSA

  -- prezzo cat
  /*insert into #tmp_bf(importo,codiva,aliquota,descrizione)
  select sum(e.prezzobig) as importo,i.codiva,i.aliquota,i.descrizione  
  from entbig_arch  e
  inner join catego c on c.catkey=e.catkey
  inner join seqbig_arch  s on s.codpren=e.codpren and e.n_mod=s.n_mod and e.n_seq=s.n_seq
  inner join configcatego_iva g on c.gruppo_cat=g.gruppo_cat and g.coditinera=s.coditinera and @data_pren between g.VALIDO_DAL and g.VALIDO_AL and g.CODVAL=@codval
  inner join iva i on i.codiva=g.codiva
  where e.codpren=@codPren
  and e.n_mod=@n_mod
  and e.n_seq=@n_seq
  group by i.codiva,i.aliquota,i.descrizione*/

  -- tasse 
  insert into #tmp_bf 
  select CODTASSA, sum(importo) as importo, codiva, aliquota, descrizione from dbo.fn_calcolaTax (@codpren, @n_seq, @n_mod, 1, '*') group by codiva, aliquota, descrizione, CODTASSA
	
  
  --INSERISCO IN DETTAX_IVA_ARCH
INSERT INTO DETTAX_IVA_ARCH(CODPREN, N_SEQ, N_MOD, ALIQUOTA, CODIVA, CODTASSA, IMPORTO)
	SELECT @CODPREN, @N_SEQ, @N_MOD, ALIQUOTA, CODIVA, CODTASSA, IMPORTO FROM #TMP_BF
end

